package com.training.api.service;

import com.training.api.repository.AuthorizationRepository;
import com.training.bean.StageAuthorization;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class AuthorizationService {

    @Autowired
    private AuthorizationRepository repository;
    /**
     * 检查用户是否有指定阶段的授权
     * @param userId 用户ID
     * @param stageId 阶段ID
     * @return 如果有授权返回true，否则返回false
     */
    public boolean isUserAuthorizedForStage(int userId,String userType, int stageId) {
        // 直接查询特定用户和阶段的授权记录
        List<StageAuthorization> authorizations = repository.findByUserIdAndStageId(userId, stageId);
        
        // 检查是否有有效的授权（当前时间在授权开始和结束时间之间）
        Date now = new Date();
        for (StageAuthorization auth : authorizations) {
            // 检查开始时间：如果开始时间为空，或开始时间不晚于现在
            boolean validStart = auth.getStartTime() == null || !auth.getStartTime().after(now);
            // 检查结束时间：如果结束时间为空，或结束时间不早于现在
            boolean validEnd = auth.getEndTime() == null || !auth.getEndTime().before(now);
            
            if (validStart && validEnd) {
                return true; // 找到有效授权
            }
        }
        return false; // 没有找到有效授权
    }
}